package helper;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;


/**
 * 使用特殊的SQL语句进行分页
 * 
 * @author WZJ
 * 
 */
public class QueryPageBean {
	

	/**
	 * 获得表中数据记录的个数
	 *  
	 * @return totalRecord 表中的总记录数
	 */
//	public static int getRowNumber(String sql) {
//		Connection conn = DBConnection.getConn();
//		int totalRecord = 0;
//		try {
//			Statement stmt = conn.createStatement();
//			
//			ResultSet rs = stmt.executeQuery(sql);
//			rs.next();
//			totalRecord = rs.getInt(1);
//		} catch (SQLException e) {
//			e.printStackTrace();
//		} finally {
//			if (conn != null) {
//				try {
//					DBConnection.closeConn();
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		}
		
//		return totalRecord;
//	}

	/**
	 * 获得总的页数
	 * 
	 * @param pageSize
	 *            每页显示的条数
	 * @return 返回总页数
	 */
//	public static int getTotalPage(String sql,int pageSize) {
//		int totalPage = 1;
//		int tmpPage = 0;
//		int rowNum = getRowNumber(sql);
//		tmpPage = rowNum % pageSize;
//		if (tmpPage == 0) {
//			totalPage = rowNum / pageSize;
//		} else {
//			totalPage = (int)(Math.floor(rowNum / pageSize) + 1);
//		}
//		if (totalPage == 0) {
//			totalPage = 1;
//		}
//		return totalPage;
//	}

	/**
	 * 得到一页的数据，并封装到集合中
	 * 
	 * @param pageSize
	 *            每页显示的条数
	 * @param page
	 *            当前显示页
	 * @param sqlQueryPage
	 *            查询一页的特殊SQL语句
	 * @param sqlRowNumber
	 *            查询总条数的SQL语句
	 * @return 装有一页数据的结合对象
	 */
//	public static List getPageResult(int pageSize, int page,
//			String sqlQueryPage, String sqlRowNumber) {
//		List list = new ArrayList();
//
//		int start = (page - 1) * pageSize;
//		int end = page * pageSize;
//		int rowNumber = getRowNumber(sqlRowNumber);// 得到总行数
//		if (end > rowNumber)
//			end = rowNumber;
//
//		Connection conn = DBConnection.getConn();
//		ResultSet rs = null;
//		try {
//			PreparedStatement pstmt = conn.prepareStatement(sqlQueryPage);
//			pstmt.setInt(1, end);
//			pstmt.setInt(2, start);
//			rs = pstmt.executeQuery();
//			while (rs.next()) {
//				
//			}
//			
//		} catch (SQLException e) {
//			e.printStackTrace();
//		} finally {
//			if (conn != null) {
//				try {
//					DBConnection.closeConn();
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		}
//		return list;
//	}

	public static void main(String[] args) {

		String queryPageSQL = "SELECT * FROM (SELECT row_.*,rownum rownum_  FROM "
				+ "(SELECT * FROM emp ORDER BY empno) row_ WHERE rownum<=?) WHERE rownum_>?";

		String rowNumberSQL = "SELECT count(*)  as rowNumber FROM emp";

		
		
	}
}
